/*******************************************
* File: jquery-glossary.js
* Author: Kevin
* Date: Mon, Apr 25, 2011
*
* Description: Does pop-up glossary for
* books
*******************************************/
function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split('&');
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split('=');
if (decodeURIComponent(pair[0]) == variable) {
return decodeURIComponent(pair[1]);
}
}
}
$(document).ready(function() {
var ptitle = getQueryVariable('title')
var plang = getQueryVariable('lang')
//set multilanguage titles
//es_titles is titles in Spanish that should show alternate language English lessons
var es_titles = ["cc1s","cc2s","cc3s","ccas","ccgs","cca2s","int1s","int2s","int3s"];
//en_titles is titles in English that should show alternate language Spanish lessons
var en_titles = ["cc1","cc2","cc3","cca","ccg","cca2","cc4","int2","int3","cc1mn","cc2mn","cc3mn"];
var en_title = en_titles.includes(ptitle);
var es_title = es_titles.includes(ptitle);
if (en_title && (plang=="es")){
if (ptitle == "cc4") {
ptitle = "int1s";
}
else {
ptitle = ptitle + "s";
}
}
else if (es_title && (plang=="en")){
if (ptitle == "int1s") {
ptitle = "cc4";
}
else {
ptitle = ptitle.slice(0,(ptitle.length-1))
}
}
var glossaryUrl = '/bookdb/GlossaryLookup.php?title=' + ptitle;
//alert(glossaryUrl);
$.ajax({
type: 'GET',
url: glossaryUrl,
dataType: 'xml',
cache: 'false',
success: glossaryXmlParser,
error: function(a,b,c) {
console.log(a,b,c)
//window.location.href="login.php?mode=logout";
//alert(b);
}
});
// $('#contents').append('
');
$('#contents').append(``);
$('#gloss').on('click', () => {
// $('#gloss-body').empty();
$('#gloss').toggle();
})
$('#gloss-close-btn').on('click', () => {
// $('#gloss-body').empty();
$('#gloss').toggle();
})
$('#gloss-dialog').on('click', (eve) => {
// $('#gloss-body').empty();
eve.stopPropagation();
})
});
function addClickHandlersToNestedGlossaryItems(xml){
$('#gloss-body span').each(function(ele) {
let glossaryId = $(this).attr('data-glossary-item-id')
$(this).on('click', () => {
let title, text;
let matchingId = $(xml).find(`definition > id:contains('${glossaryId}')`)
if(matchingId){
let matchingDef = matchingId.parent();
let glossText = matchingDef.find('text').text();
let glossName = matchingDef.find('name').text().trim();
$('#gloss-title').text(glossName)
$('#gloss-body').html(glossText)
MathJax.Hub.Queue(["Typeset",MathJax.Hub], document.getElementById('gloss'));
addClickHandlersToNestedGlossaryItems(xml)
}
})
})
}
function glossaryXmlParser(xml) {
// $('span').each(function(ele) {
// const glossaryId = $(this).attr('data-glossary-item-id');
// const spanText = $(this).html().toLowerCase();
//
// let match = $(xml).find(`definition > id:contains('${glossaryId}')`).filter(function() { return $(this).children().length === 0;})
// .parent();
//
// if(!match){
// match = $(xml).find(`definition > name:contains('${spanText}')`).filter(function() { return $(this).children().length === 0;})
// .parent();
// }
// if(!match && $(this).html().toLowerCase()[$(this).html().toLowerCase().length - 1] === 's'){
// match = $(xml).find(`definition > name:contains('${spanText.slice(spanText.length -1)}')`).filter(function() { return $(this).children().length === 0;})
//
// }
//
// if(match){
// console.log('Match found', spanText)
// let matchingDef = match.parent();
// $(this).on('click', function() {
// let glossText = matchingDef.find('text').text();
// let glossName = matchingDef.find('name').text().trim();
// $('#gloss-title').text(glossName)
// $('#gloss-body').html(glossText)
// addClickHandlersToNestedGlossaryItems(xml)
// });
// }
// });
const strongAndBolds = $('strong,b');
const spans = [];
const jSpans = $('span.glossary-link').each(function(s){
const html = $(this).html().toLowerCase();
const glossaryId = $(this).attr('data-glossary-item-id')
spans.push({
ele: $(this),
html,
glossaryId
});
})
$(xml).find('definition').each(function() {
var defname = $(this).find('name').text().trim();
var deftext = $(this).find('text').text();
var defid = $(this).find('id').text();
strongAndBolds.each(function(ele) {
if( ($(this).html().toLowerCase() == defname.toLowerCase()) || ($(this).html().toLowerCase() == (defname.toLowerCase()+'s')) )
{
$(this).css('color', 'blue');
$(this).click(function() {
$('#gloss-title').text(defname)
$('#gloss-body').html(deftext)
$('#gloss').toggle();
MathJax.Hub.Queue(["Typeset",MathJax.Hub], document.getElementById('gloss'));
addClickHandlersToNestedGlossaryItems(xml)
});
$(this).hover(
function() {
$(this).css('cursor', 'pointer');
},
function() {
$(this).css('cursor', 'auto');
}
);
}
});
for (var i = 0; i < spans.length; i++){
const span = spans[i];
if( (span.glossaryId == defid || span.html == defname.toLowerCase()) || (span.html == (defname.toLowerCase()+'s')) )
{
$(span.ele).unbind('click');
$(span.ele).on('click', function() {
$('#gloss-title').text(defname)
$('#gloss-body').html(deftext)
$('#gloss').toggle();
MathJax.Hub.Queue(["Typeset",MathJax.Hub], document.getElementById('gloss'));
addClickHandlersToNestedGlossaryItems(xml)
});
}
}
});
}